//
//  AppNetworkingManager.h
//  OA
//
//  Created by Guo Rui on 2017/9/26.
//Copyright © 2017年 GR Harry. All rights reserved.
//


#define OANETWORKMANAGERUSER_KEY  @"OANETWORKMANAGERUSER_KEY"
#define OANETWORKMANAGERSHOWHUD  0
#define OANETWORKMANAGERDEPARTMENT_KET @"OANETWORKMANAGERDEPARTMENT_KET"

#import <Foundation/Foundation.h>
//request
#import "AppBaseRequest.h"
//model
//#import "AppBaseModel.h"
//interface config
//#import "AppInterfaceConfig.h"

typedef void(^OANetworkingObjectBlock)(id object, NSError *error);

/**
 请求管理类，所有请求都应该由此工具类的类方法发起，即一个接口请求，对应这里的一个类方法。若请求比较多，建议以继承的方式，根据模块新建多个命名规范为：功能模块名称+NetworkingManager的子类.
 */
@interface AppNetworkingManager : NSObject

///=============================================================================
/// @name 具体各个模块的请求方法
///=============================================================================

///=============================================================================
/// @name 具体各个模块的请求方法
///=============================================================================

///**
// 参考示例方法
//
// @param params 参数
// @param responseBlock 返回结果
// */
//+ (void)registerWithParams:(NSDictionary *)params responseBlock:(void(^)(XXXUserModel *response, NSError *error))responseBlock;

///=============================================================================
/// @name 公共请求方法
///=============================================================================

/**
 发送普通请求
 
 @param params 请求参数
 @param path 请求路径
 @param responseObjectPath 返回结果的路径，若不为空，则会返回调用返回对象的valueForKeyPath在responseBlock中返回该对象
 @param popoverProgressString 加载中的状态的字符串,若有值，会自动弹出TFPopoverTypeStatus的弹出层。
 @param handleErrorAutomatically 是否自动处理错误，若为YES，则弹出错误内容的TFPopoverTypeFail的弹出层
 @param responseBlock 返回的结果block
 @return AppBaseRequest
 */
+ (__kindof AppBaseRequest *)startRequestWithParams:(id)params
                                               path:(NSString *)path
                                 responseObjectPath:(NSString *)responseObjectPath
                              popoverProgressString:(NSString *)popoverProgressString
                           handleErrorAutomatically:(BOOL)handleErrorAutomatically
                                      responseBlock:(void(^)(id response, NSError *error))responseBlock;

/**
 发送需要拼接httpBody的请求
 
 @param params 请求参数
 @param path 请求路径
 @param constructingBody 拼接body的block
 @param responseObjectPath 返回结果的路径，若不为空，则会返回调用返回对象的valueForKeyPath在responseBlock中返回该对象
 @param popoverProgressString 加载中的状态的字符串,若有值，会自动弹出TFPopoverTypeStatus，的弹出层。
 @param handleErrorAutomatically 是否自动处理错误，若为YES，则弹出错误内容的TFPopoverTypeFail的弹出层
 @param responseBlock 返回的结果block
 @return AppBaseRequest
 */
+ (__kindof AppBaseRequest *)startRequestWithParams:(id)params
                                               path:(NSString *)path
                                   constructingBody:(TFConstructingBodyBlock)constructingBody
                                 responseObjectPath:(NSString *)responseObjectPath
                              popoverProgressString:(NSString *)popoverProgressString
                           handleErrorAutomatically:(BOOL)handleErrorAutomatically
                                      responseBlock:(void(^)(id response, NSError *error))responseBlock;


+(void)appendImageDataWithImages:(NSArray *)images formData:(id<AFMultipartFormData>)formData;

@end
